rm server client
protoc --cpp_out=. --plugin=protoc-gen-grpc=/usr/local/bin/grpc_cpp_plugin --grpc_out=. hello.proto

g++ hello.pb.cc hello.grpc.pb.cc main_server.cpp -o server -std=c++14 -lprotobuf -labsl_flags_parse -lgrpc++_reflection -lgrpc++ \
-lgrpc -lgpr -labsl_log_internal_check_op -labsl_log_internal_conditions -labsl_log_internal_message \
-labsl_log_internal_nullguard -labsl_statusor -labsl_status -labsl_flags_internal -labsl_flags_marshalling \
-labsl_flags_reflection -labsl_cord -labsl_cordz_info -labsl_cordz_functions -labsl_str_format_internal \
-labsl_raw_hash_set -labsl_hash -labsl_synchronization -labsl_strings -labsl_string_view -labsl_throw_delegate\
 -lpthread -labsl_raw_logging_internal -labsl_spinlock_wait -lstdc++ -labsl_flags_usage \
 -labsl_flags_usage_internal -labsl_flags_config -labsl_flags_program_name -labsl_flags_private_handle_accessor \
 -lupb -lupb_collections_lib -lupb -labsl_time -labsl_bad_variant_access -lsystemd -lupb_textformat_lib \
 -lre2 -lssl -lcrypto -laddress_sorting -labsl_random_internal_pool_urbg -labsl_random_internal_randen \
 -labsl_random_internal_randen_hwaes_impl -labsl_random_internal_randen_slow -labsl_bad_optional_access \
 -labsl_time_zone -lm -lrt -labsl_base -labsl_examine_stack -labsl_log_internal_format -labsl_log_internal_proto \
 -labsl_strerror -labsl_log_internal_log_sink_set -labsl_log_internal_globals -labsl_log_globals \
 -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal -labsl_int128 -labsl_cord_internal \
 -labsl_crc_cord_state -labsl_cordz_handle -labsl_stacktrace -labsl_exponential_biased -labsl_city \
 -labsl_low_level_hash -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_symbolize \
 -labsl_malloc_internal -labsl_strings_internal -lutf8_range_lib\
 -labsl_random_internal_seed_material -labsl_random_seed_gen_exception -labsl_random_internal_randen_hwaes \
 -labsl_random_internal_platform -labsl_log_sink -labsl_crc32c -labsl_debugging_internal \
 -labsl_demangle_internal -ldl -labsl_crc_internal  > log.txt 2>&1

 g++ hello.pb.cc hello.grpc.pb.cc main_client.cpp -o client -std=c++14 -lprotobuf -labsl_flags_parse -lgrpc++_reflection -lgrpc++ \
-lgrpc -lgpr -labsl_log_internal_check_op -labsl_log_internal_conditions -labsl_log_internal_message \
-labsl_log_internal_nullguard -labsl_statusor -labsl_status -labsl_flags_internal -labsl_flags_marshalling \
-labsl_flags_reflection -labsl_cord -labsl_cordz_info -labsl_cordz_functions -labsl_str_format_internal \
-labsl_raw_hash_set -labsl_hash -labsl_synchronization -labsl_strings -labsl_string_view -labsl_throw_delegate\
 -lpthread -labsl_raw_logging_internal -labsl_spinlock_wait -lstdc++ -labsl_flags_usage \
 -labsl_flags_usage_internal -labsl_flags_config -labsl_flags_program_name -labsl_flags_private_handle_accessor \
 -lupb -lupb_collections_lib -lupb -labsl_time -labsl_bad_variant_access -lsystemd -lupb_textformat_lib \
 -lre2 -lssl -lcrypto -laddress_sorting -labsl_random_internal_pool_urbg -labsl_random_internal_randen \
 -labsl_random_internal_randen_hwaes_impl -labsl_random_internal_randen_slow -labsl_bad_optional_access \
 -labsl_time_zone -lm -lrt -labsl_base -labsl_examine_stack -labsl_log_internal_format -labsl_log_internal_proto \
 -labsl_strerror -labsl_log_internal_log_sink_set -labsl_log_internal_globals -labsl_log_globals \
 -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal -labsl_int128 -labsl_cord_internal \
 -labsl_crc_cord_state -labsl_cordz_handle -labsl_stacktrace -labsl_exponential_biased -labsl_city \
 -labsl_low_level_hash -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_symbolize \
 -labsl_malloc_internal -labsl_strings_internal -lutf8_range_lib\
 -labsl_random_internal_seed_material -labsl_random_seed_gen_exception -labsl_random_internal_randen_hwaes \
 -labsl_random_internal_platform -labsl_log_sink -labsl_crc32c -labsl_debugging_internal \
 -labsl_demangle_internal -ldl -labsl_crc_internal  >> log.txt 2>&1